package com.sh.data.engine.domain.common.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sh.data.engine.domain.base.model.enums.DirectoryMenuEnum;
import com.sh.data.engine.domain.common.model.domain.DirectoryDomain;
import com.sh.data.engine.domain.common.model.param.UpsertDirectoryParam;
import com.sh.data.engine.repository.dao.common.entity.DirectoryEntity;

import java.util.List;

/**
 * @author：jingchen.hr
 * @descripion:
 * @data:5/5/202210:32 AM
 */
public interface DirectoryService extends IService<DirectoryEntity> {
    /**
     * 获取目录列表
     *
     * @param projectId
     * @param directoryMenuEnum
     * @param search
     * @return
     */
    List<DirectoryDomain> getDirList(
        Long projectId, DirectoryMenuEnum directoryMenuEnum, String search);

    /**
     * 新增、编辑目录
     *
     * @param param
     * @return
     */
    Boolean upsetDir(UpsertDirectoryParam param);

    /**
     * 删除目录，以及包含的子目录（无能否删除的相关业务判断）
     *
     * @param id
     * @param directoryMenuEnum
     * @return
     */
    Boolean deleteDir(Long id, DirectoryMenuEnum directoryMenuEnum);

    /**
     * 获取指定目录下的子目录集合（不包含指定目录本身）
     *
     * @param id
     * @return
     */
    List<DirectoryEntity> getChildrenById(
        Long id, Long projectId, DirectoryMenuEnum directoryMenuEnum);

    /**
     * 插入目录返回数据
     */
    DirectoryEntity insetDirectory(UpsertDirectoryParam upsertDirectoryParam);

    DirectoryEntity getDirectoryEntityById(Long id);

    List<DirectoryDomain> getDirListWithOutTopLevel(
        Long projectId, DirectoryMenuEnum directoryMenuEnum, String search);
}
